package com.atguigu.spring5.annotations.service;

import com.atguigu.spring5.annotations.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

// 相当于 <bean name="userService" class="com.atguigu.spring5.annotations.service.UserService">
// value 可以省略不写，默认值为类名称的首字母小写。userService
@Service(value="userService")
public class UserService {

    // 传统做法。先设置set方法，然后xml中配置 property。
    // 通过 @Value，直接注入普通类型属性值
    @Value(value="abc")
    private String name;

    // @Autowired  根据属性名称进行自动装配；根据属性类型UserDao进行自动装配；不需要set方法
    // @Qualifier(value="userDaoImpl_alia") 要和 @Autowired 搭配使用；针对同一个class有多个bean的情况，这时才用@Qualifier
//    @Autowired
//    @Qualifier(value="userDaoImpl_alia")
//    @Resource // 默认针对类型进行注入
    @Resource(name="userDaoImpl_alia")  // 也可以针对名称进行注入
    private UserDao userDao;


    public void add(){
        System.out.println("service add ....."+name);
        userDao.add();
    }
}
